package com.lmb.util;

import cn.hutool.jwt.JWTUtil;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class TokenUtil {
    //签名
    private static final String TOKEN_KEY = "lmb";//密钥
    private static final Map<String, Object> ACTIVE_TOKENS = new ConcurrentHashMap<>();//存储token

    //获取token中的数据
    //

    // 用户Token生成（强制传入ROLE_USER角色）
    public static String getUserToken(Integer user_id, String name) {
        Map map = Map.of(
                SyS.TOKEN_USER_ID, user_id,
                SyS.TOKEN_KEY_ROLE, SyS.ROLE_USER, // 固定用户角色
                SyS.TOKEN_KEY_USERNAME, name
        );
        return JWTUtil.createToken(map, TOKEN_KEY.getBytes());
    }

    // 管理员Token生成（强制传入ROLE_ADMIN角色）
    public static String getAdminToken(Integer ad_id,String name) {
        Map map = Map.of(
                SyS.TOKEN_AD_ID, ad_id,
                SyS.TOKEN_KEY_ROLE, SyS.ROLE_ADMIN ,// 固定管理员角色
                SyS.TOKEN_KEY_ADNAME, name
        );
        return JWTUtil.createToken(map, TOKEN_KEY.getBytes());
    }
    public static boolean verify(String token){//验证token

        return JWTUtil.verify(token,TOKEN_KEY.getBytes());
    }//验证token
    public static Object getUsername(String token,String key){//获取用户名
        if (token == null || token.trim().isEmpty()) {
            return null;
        }
        return JWTUtil.parseToken(token).getPayload(key);
    }
    public static Object getAdname(String token,String key){//获取用户名
        if (token == null || token.trim().isEmpty()) {
            return null;
        }
        return JWTUtil.parseToken(token).getPayload(key);
    }
    // 删除token（使token失效）
    public static void removeToken(String token) {
        if (token != null && !token.trim().isEmpty()) {
            ACTIVE_TOKENS.remove(token);
        }
    }
}
